#include <bits/stdc++.h>

using namespace std;

int matrix[10][10];
int num;

bool check(int x,int y) {
    // 检查同行
    for (int j = 1; j <= 8; j++) { // 从1到n
        if (matrix[x][j] == 1) {
            return false; // 找到同行有1，返回false
        }
    }

    // 检查同列
    for (int i = 1; i <= 8; i++) { // 从1到n
        if (matrix[i][y] == 1) {
            return false; // 找到同列有1，返回false
        }
    }

    for(int i = 1;i <= 8;i ++) {
        for(int j = 1;j <= 8;j++) {
            if(i-j == x - y && matrix[i][j]) return false;
        }
    }

    for(int i = 1;i <= 8;i++) {
        for(int j = 1;j <= 8;j++) {
            if (i+j == x + y && matrix[i][j]) return false;
        }
    }

    return true; // 如果所有方向都没有找到1，返回true

}

void search(int step,int item) {
    // step为9时，则说明已经搜索完毕，
    // 判断num是否等于item
    // 如果相等，则说明是需要那个项
    // 如果不相等，则说明没有找到，让num进行增加计数。
    if(step == 9) {
        if (num == item) {
            for(int i = 1;i <= 8;i++) {
                for(int j = 1;j <= 8;j++) {
                    if (matrix[i][j]) cout <<j;
                }
            }
            cout << endl;
        }
        num++;
        return;
    }

    // step为行，i为列
    // 检查每行的每个元素，查看是否满足条件，
    // 如果满足条件，则将其的值设置为1.,然后继续搜索
    // 如果不满足条件，则什么都不做
    for(int i = 1;i <= 8;i++) {
        if(check(step,i)) {
            matrix[step][i] = 1;
            search(step+1,item);
            matrix[step][i] = 0;
        }
    }
}

int main() {
    int n,m;
    cin >> n;
    for(int i = 0;i < n;i++) {
        cin >> m;
        num = 1;
        search(1,m);
    }

}